/**
 * (C)2012 Exlu Corporation. All rights reserved.
 * 注意事項   :
 */
package cn.exlu.wea.io.directory.file;

import java.io.BufferedOutputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

/**
 * 字节写入器
 * @author Mark 
 * @version 1.0.1.1
 * @CreateTime 2013-1-23
 */
public class FileByteWriter {
    private BufferedOutputStream buffWriter;
    
    /**
     * 构造函数
     * @param fileFullPath 文件全路径
     * @throws FileNotFoundException 没有找到文件
     */
    public FileByteWriter(String fileFullPath) throws FileNotFoundException{
        buffWriter = new BufferedOutputStream(new FileOutputStream(fileFullPath, false));
    }
 
    /**
     * 构造函数
     * @param fileFullPath 文件全路径
     * @param append 在现有文件中继续添加文本，而不是重写，true 添加文本 false 重写文件
     * @throws FileNotFoundException 没有找到文件
     */
    public FileByteWriter(String fileFullPath, boolean append) throws FileNotFoundException {
        buffWriter = new BufferedOutputStream(new FileOutputStream(fileFullPath, append));
    }
    
    /**
     * 写入一个字节
     * @param i 字节
     * @throws IOException 写入异常
     */
    public void write(int i) throws IOException{
        buffWriter.write(i);
    }
    
    /**
     * 写入一个字节
     * @param b 字节
     * @throws IOException 写入异常
     */
    public void write(byte b) throws IOException{
        buffWriter.write(b);
    }

    /**
     * 从数组集合中写入多个字节到文件中
     * @param byteArr 字节集合
     * @throws IOException 写入异常
     */
    public void write(byte[] byteArr) throws IOException {
        buffWriter.write(byteArr);
    }

    /**
     * 从数组集合中写入多个字节到文件中
     * @param byteArr 字节集合
     * @param off 起始位置
     * @param len 写入字节数
     * @throws IOException 写入异常
     */
    public void writer(byte[] byteArr, int off, int len) throws IOException {
        buffWriter.write(byteArr, off, len);
    }
 
    /**
     * 将数据写入文件并且关闭文件。
     * @throws IOException 关闭异常
     */
    public void close() throws IOException {
        buffWriter.flush();
        buffWriter.close();
    }
    
    /**
     * 将数据写入文件。
     * @throws IOException 写入异常
     */
    public void flush() throws IOException
    {
        buffWriter.flush();
    }
}
